let path = require("path");
let fs = require("fs");
let gracefulFs = require("graceful-fs");

function resolve(dir) {
  return path.join(__dirname, dir);
}

// let assetsCDN = {
//   // webpack build externals
//   externals: {
//     vue: 'Vue',
//     'vue-router': 'VueRouter',
//     vuex: 'Vuex',
//     axios: 'axios',
//     monaco: 'monaco',
//     'ant-design-vue': 'ant-design-vue',
//     beautifier: 'beautifier',
//     moment: 'moment',
//     'AMap': 'AMap',
//     'window.jQuery': 'jquery',
//     '$': 'jquery'
//   }
// }

// vue.config.js
module.exports = {
  /*
  Vue-cli3:
  Crashed when using Webpack `import()` #2463
  https://github.com/vuejs/vue-cli/issues/2463
 */
  // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  runtimeCompiler: true,

  // 打包app时放开该配置
  publicPath: '/',

  configureWebpack: (config) => {
    // 生产环境取消 console.log
    if (process.env.NODE_ENV === "production") {
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true;
    }
  },
  pages: {
    index: {
      entry: "src/main.js",
      template: "public/index.html",
      filename: "index.html",
      title: "",
    },
    // preview: {
    //   // page 的入口
    //   entry: 'src/previewMain.js',
    //   // 模板来源
    //   template: 'public/preview.html',
    //   // 在 dist/index.html 的输出
    //   filename: 'preview.html',
    //   // 当使用 title 选项时，
    //   // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
    //   title: '预览',
    //   // 在这个页面中包含的块，默认情况下会包含
    //   // 提取出来的通用 chunk 和 vendor chunk。
    //   chunks: ['chunk-vendors', 'chunk-common', 'preview'],

    // }
  },
  /* */
  // 新增配置
  configureWebpack: {
    resolve: {
      // .mjs needed for https://github.com/graphql/graphql-js/issues/1272
      extensions: ['*', '.mjs', '.js', '.vue', '.json']
    }
  },

  chainWebpack: (config) => {
    gracefulFs.gracefulify(fs); // 解决public文件夹中大文件打包失败问题
    config.resolve.alias
      .set("@$", resolve("src"))
      .set("@api", resolve("src/api"))
      .set("@assets", resolve("src/assets"))
      .set("@comp", resolve("src/components"))
      .set("@views", resolve("src/views"))
      .set("@layout", resolve("src/layout"));

    // 配置 webpack 识别 markdown 为普通的文件
    // config.module
    //   .rule("markdown")
    //   .test(/\.md$/)
    //   .use()
    //   .loader("file-loader")
    //   .end();
    config.module // fixes https://github.com/graphql/graphql-js/issues/1272
      .rule('mjs$')
      .test(/\.mjs$/)
      .include
      .add(/node_modules/)
      .end()
      .type('javascript/auto');
  },

  // css: {
  //     loaderOptions: {
  //         less: {
  //             modifyVars: {
  //                 /* less 变量覆盖，用于自定义 ant design 主题 */
  //                 'primary-color': '#1890FF',
  //                 'link-color': '#1890FF',
  //                 'border-radius-base': '4px'
  //             },
  //             javascriptEnabled: true
  //         },
  //         postcss: {
  //             plugins: [
  //                 require('postcss-pxtorem')({
  //                     rootValue: 16, // 换算的基数
  //                     selectorBlackList: [], // 忽略转换正则匹配项
  //                     propList: ['*']
  //                 })
  //             ]
  //         }
  //     }
  // },

  devServer: {
    port: 3000,
    proxy: {
      "/": {
        // target: "http://sjjapi.ydunet.com/", // 请求本地 需要jeecg-boot后台项目
        // target: "http://s.porgan.com:5002/", // 请求本地 需要jeecg-boot后台项目
        // target: "http://192.168.18.21:8087/", // 请求本地 需要jeecg-boot后台项目
        // target: "http://121.36.208.148:8087",
        target: "http://www.jubbart.com/",
        ws: false,
        changeOrigin: true,
        logLevel: "debug"
      },
    },
  },

  lintOnSave: false,
};
